package com.web;

import com.bean.User;
import com.dao.UserDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/book/login")
public class LoginServlet extends HttpServlet {
    /**
     * 开始初始化
     */
    @Override
    public void init() throws ServletException {
        System.out.println(">>> Login 我被实例化");
    }
    /**
     * 销毁对象
     */
    @Override
    public void destroy() {
        System.out.println(">>> Login 我正在被销毁");
    }

    /**
     * doGet 请求到页面上
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 页面转发
        req.getRequestDispatcher("/login/login.jsp").forward(req, resp);
    }

    /**
     * doPost 处理登录逻辑
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取参数（用户名和密码）
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");

        // 判断用户名和密码是否为空
        if (username.length() == 0 || password.length() == 0 || code.length() == 0) {
            // 把信息存到 message 中处理
            req.setAttribute("message", "输入有误哦！请重新输入哦");
            // 页面转发
            req.getRequestDispatcher("/login/result.jsp").forward(req, resp);
            // 返回
            return;
        }

        try {
            // 创建对象并且实现方法
            User user = new UserDao().login(username, password);

            // 判断用户是否为空
            if (user == null) {
                // 用 session 获取用户信息，为空执行向下执行到页面转发结束
                req.getSession().setAttribute("user", null);

                // 把信息存到 message 中处理
                req.setAttribute("message", "用户名或密码错误！");
                // 页面转发
                req.getRequestDispatcher("/login/result.jsp").forward(req, resp);
            } else {
                // 创建 session 对象（session 是后端的会话）
                HttpSession session = req.getSession();
                // 把用户存到 session 中
                session.setAttribute("user", user);

                // 把信息存到 message 中处理
                req.setAttribute("message", "登录成功");
                // 把信息存到 page 中处理
                req.setAttribute("page", "/book/list");
                // 页面转发
                req.getRequestDispatcher("/login/result.jsp").forward(req, resp);
            }
        } catch (Exception e) {
            // 把异常信息打印到控制台
            e.printStackTrace();
            // 用 session 获取用户信息，为空执行向下执行
            req.getSession().setAttribute("user", null);

            // 把信息存到 message 中处理
            req.setAttribute("message", "错误信息：" + e.getLocalizedMessage());
            // 页面转发
            req.getRequestDispatcher("/login/result.jsp").forward(req, resp);
        }
    }
}
